Passed
Push — master ( 24a438...ac8bb2 )
by Sergey
04:17
created

RbacService.getRole   A

Complexity

Conditions 2

Size

Total Lines 12
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 11
dl 0
loc 12
c 0
b 0
f 0
rs 9.85
cc 2
1
import { Injectable } from '@nestjs/common';
2
import { IRbac } from './interfaces/rbac.interface';
3
import { StorageRbacService } from './storage.rbac.service';
4
import { RoleRbac } from '../role/role.rbac';
5
import { IRoleRbac } from '../role/interfaces/role.rbac.interface';
6
import { RbacExceptions } from '../exceptions/rbac.exceptions';
7
import { IParamsFilter } from '../params-filter/interfaces/params.filter.interface';
8
9
@Injectable()
10
export class RbacService implements IRbac {
11
12
  constructor(
13
    private readonly  storageRbacService: StorageRbacService,
14
  ) {
15
  }
16
17
  async getRole(role: string, paramsFilter?: IParamsFilter): Promise<IRoleRbac> {
18
    const storage = await this.storageRbacService.getStorage();
19
    if (!storage.roles || !storage.roles.includes(role)) {
20
      throw new RbacExceptions('There is no exist a role.');
21
    }
22
23
    return new RoleRbac(
24
      role,
25
      await this.storageRbacService.getGrant(role),
26
      await this.storageRbacService.getFilters(),
27
      paramsFilter,
28
    );
29
  }
30
}
31